"""
Берём несколько организации Супервайзера. кладём в файд КВС.
все забоанные помечаем числов в поле Kategoria.
"""


import sys
import os
from time import time
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWebKitWidgets import *
from PyQt5.QtSql import *
from PyQt5.QtWidgets import *

import logging                                                                  # запись логов

def main():


    global dbMS

    app = QApplication(sys.argv)

    logging.basicConfig(filename='coll_T.log',level=logging.DEBUG,
        format = u'%(filename)s[LINE:%(lineno)d]# %(levelname)-8s %(message)s')

    if not os.path.exists('data'):
        os.makedirs('data')
    
    
    """ Соединение с лексемой."""
    dbMS = QSqlDatabase.addDatabase("QODBC")
    dbMS.setDatabaseName("lexema")
    dbMS.setUserName("sa")
    dbMS.setPassword("5318")
    if dbMS.open():
        print("соединение lexema")
    find_org()
    QSqlDatabase.removeDatabase(dbMS.connectionName())
    
def find_org():
    """ найти поле для спецотметок в Spr_Org (Kategoria)
    найти всех по супервайзером у кого не стоят спец отметки
    "записать в таблицу"
    брать организуцию выводить в ксв
    делать спецотметку
    (для Самары)
    взять проверять строку с телефонами
    ищем длинну телефона, если 6 отбой
    смотрим адрес. если 445000 отбой, если Тольятти отбой
    """
    def test_phone(phones):
        for phone in phones:
            if len(phone) == 6:
                return(True)

    f = open("Самара.csv", 'w')
    select = QSqlQuery(dbMS)
    update = QSqlQuery(dbMS)
    select.exec("SELECT s.Code, u.Name, s.Phone, s.Adres "
        "FROM spr_org s INNER JOIN UniAnalit u ON s.code=u.vcode "
        "WHERE ((s.Kategoria IS  NULL) OR (s.Kategoria = 0)) AND (s.kurator=123019) "
                "ORDER BY u.Name")
    n = 0
    while select.next() and n<80:                                                   
        # проверка телефонов
        phones = select.value(2).split(',')
        if test_phone(phones):
            continue
            
        if select.value(3).find('445') > 0:
            continue
        if select.value(3).find('Тольятти') > 0:
            continue
        
        sql = "UPDATE spr_org SET Kategoria = 1 WHERE Code = {}".format(select.value(0))
        print(sql)
        if not update.exec(sql):
            logging.error('Update: {}'.format(update.lastError().text()))
            quit()
        s = ('{}${}${}${}\n'.
            format(select.value(0), select.value(1), select.value(2), select.value(3)))
        f.write(s)
        n += 1
    f.close()

if __name__ == '__main__':                                                      # ОСНОВНОЙ ЦИКЛ
    main()
